package com.principle.lishitihuan;

/**
 * 里氏替换原则，要求子类不要重写父类的方法，
 *
 * 出现的问题：
 * 别人重写了method方法但是我不知道导致调用错误，下意识认为和父类一样是作差
 *
 * 解决方法，让B使用到A（组合关系） ，但是不继承自A，这样就不会下意识认为
 * B的方法和A的方法有什么问题了
 */
public class LiskovSubstitution2 {
    public static void main(String[] args) {
        A1 a1 = new A1();
        System.out.println("11-3="+a1.method1(11,3));
        System.out.println("1-8="+a1.method1(1,8));

        System.out.println("--------------------------");
        //B类现在和A类没有继承关系，所以我就不会下意识任务b的method1是作差
        B1  b1 =new B1();
        System.out.println("11+3="+b1.method1(11,3)); //别人重写了method方法但是我不知道导致调用错误
        System.out.println("1+8="+b1.method1(1,8));
        System.out.println("11+3+9="+b1.method2(11,3));
        System.out.println("1-8="+b1.method3(1,8));



    }
}


class Base{

}

class A1 {
    public int method1(int a , int b ){
        return a-b;
    }
}

class B1 extends Base{
    private A1 a1 = new A1();

    public int method1(int a , int b ){
        return a+b;
    }

    public int method2(int a , int b ){
        return a+b+9;
    }

    public int method3(int a , int b ){
        return a1.method1(a,b);
    }
}
